#ifndef LOGGER_H
#define LOGGER_H

#include "header.h"

#define MAX_LOG_PATH 256
#define MAX_LOG_MESSAGE 1024
#define MAX_KEY_LENGTH 64
#define MAX_VALUE_LENGTH 192

// 定义日志级别
typedef enum {
    DEBUG,
    INFO,
    WARNNING,
    ERROR
} LogLevel;

// 定义 ConfigItem 结构体
typedef struct {
    char key[MAX_KEY_LENGTH];
    char value[MAX_VALUE_LENGTH];
} ConfigItem;

// 添加全局日志级别变量声明
extern LogLevel current_log_level;

// 设置日志文件路径函数声明
void set_log_file(const char *path);

// 设置日志级别的函数声明
void set_log_level(LogLevel level);

// 日志函数声明
void log_message(LogLevel level, const char *file, int line, const char *func, const char *format, ...);

// read_config 函数声明
int read_config(const char *filename, ConfigItem **config, int *count);

// apply_config 函数声明
void apply_config(ConfigItem *config, int count);

// 日志宏定义,方便使用
#define MY_LOG_DEBUG(format, ...) log_message(DEBUG, __FILE__, __LINE__, __func__, format, ##__VA_ARGS__)
#define MY_LOG_INFO(format, ...) log_message(INFO, __FILE__, __LINE__, __func__, format, ##__VA_ARGS__)
#define MY_LOG_WARN(format, ...) log_message(WARNNING, __FILE__, __LINE__, __func__, format, ##__VA_ARGS__)
#define MY_LOG_ERROR(format, ...) log_message(ERROR, __FILE__, __LINE__, __func__, format, ##__VA_ARGS__)

#endif // LOGGER_H

